.model small
.Stack 100h
.Data
  eil1 db 13,10,'1-as daugiklis: $'
  eil2 db 13,10,'2-as daugiklis: $'
  eil3 db 13,10,'Atsakymas: $'
  d1 db 256 dup(0)
  d2 db 256 dup(0)
  ats db 510 dup(0)
.Code
  irasyti proc 
    mov ah, 06h
    int 21h
    ret
  endp irasyti

  irasyti_eilute proc
    mov ah, 09h
    int 21h
    ret
  endp irasyti_eilute

  skaityti proc
    xor bx, bx
    mov cl, 10h
    jmp sk_ciklas
   sk_atgal:
    cmp bl, 00h
    je sk_ciklas
    dec bl
    mov dl, 08h
    call irasyti
    mov dl, 20h
    call irasyti
    mov dl, 08h
    call irasyti
    sk_ciklas:
      mov ah, 07h
      int 21h
      cmp al, 00h
      jne sk_1
      mov ah, 07h
      int 21h
      jmp sk_ciklas
     sk_1:
      cmp al, 0dh
      je sk_baigti
      cmp al, 08h
      je sk_atgal
      xor dl, dl
      cmp bl, 0ffh
      je sk_ciklas
      sub al, 30h
      jb sk_ciklas
      cmp al, 0ah
      jb sk_2
      mov dl, 07h
      sub al, dl
      cmp al, 0ah
      jb sk_ciklas
      cmp al, 10h
      jb sk_2
      sub al, 20h
      cmp al, 0ah
      jb sk_ciklas
      cmp al, 0fh
      ja sk_ciklas
     sk_2:
      inc bl
      mov [si][bx], al
      add dl, 30h
      add dl, al
      call irasyti
    jmp sk_ciklas
   sk_baigti:
    mov [si], bl
    ret
  endp skaityti

  dauginti proc
    xor bh, bh
    mov bl, d1
    mov si, bx
    mov cl, 04h
    mov dx, 01feh
    dg_ciklas:
      xor bh, bh
      mov bl, d2
      mov di, bx
      dec dx
      mov bx, dx
      xor ch, ch
      cmp si, 00h
      je dg_baigti
      dg_ciklas2:
        cmp di, 00h
        je dg_1
        xor ah, ah
        mov al, d1[si]
        mul d2[di]
        add al, ats[bx]
        add al, ch
        shl ax, cl
        mov ch, ah
        shr al, cl
        mov ats[bx], al
        dec di
        dec bx
      jmp dg_ciklas2
      dg_1:
        cmp ch, 00h
        je dg_2
        mov al, ats[bx]
        add al, ch
        xor ah, ah
        shl ax, cl
        mov ch, ah
        shr al, cl
        mov ats[bx], al
        dec bx
      jmp dg_1

     dg_2:
      dec si
    jmp dg_ciklas
   dg_baigti:
    ret
  endp dauginti

  irasyti_ats proc
    xor bx, bx
    ir_praleisti:
      cmp ats[bx], 00h
      jne ir_ciklas
      cmp bx, 01fdh
      je ir_ciklas
      inc bx
    jmp ir_praleisti
    ir_ciklas:
      mov dl, ats[bx]
      cmp dl, 0ah
      jb ir_1
      add dl, 07h
     ir_1:
      add dl, 30h
      call irasyti
      inc bx
      cmp bx, 01feh
    jb ir_ciklas
    mov dl, 0dh
    call irasyti
    mov dl, 0ah
    call irasyti
    ret 
  endp irasyti_ats

  Pradeti:
    mov ax, @data
    mov ds, ax
    lea dx, eil1
    call irasyti_eilute
    lea si, d1
    call skaityti
    lea dx, eil2
    call irasyti_eilute
    lea si, d2
    call skaityti
    call dauginti
    lea dx, eil3
    call irasyti_eilute
    call irasyti_ats
    mov ah, 4ch
    int 21h
  end Pradeti